package 笔试真题;

import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Scanner;

public class ShunFeng2 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] values = new int[n];
        for (int i = 0; i < values.length; i++) {
            values[i] = scanner.nextInt();
        }
        PriorityQueue<Integer> queue = new PriorityQueue<>(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1-o2;
            }
        }); // 记录过程中的负数并排序，当下一次遇到的值不够减的时候，比较queue中的最小的那个，看看是不是能够替换掉。否则就放进去。
        long sum =0;
        int num = 0;
        for (int value : values) {
            if(value<0){
                if(sum+value<0 && !queue.isEmpty()){
                    Integer poll = queue.peek();
                    if(sum-poll+value>=0 && poll<value){
                        queue.poll();
                        queue.add(value);
                        sum = sum-poll+value;
                    }
                }else if(sum+value>=0) {
                    num++;
                    queue.add(value);
                    sum += value;
                }
            }else {
                num ++;
                sum += value;
            }
        }
        System.out.println(num);
    }

}
